<template>
  <div>
    <h1>回调地狱</h1>
    <pre>
      axios1(){
        <!-- success -->
        axios2() {
          <!-- success -->
            axios3() {
              () {
                  () {
                      () {
                          () {

                          }
                      }
                  }
              }
            }
        }
      }
    </pre>
    <pre>
      const promise = new Promise(function(resolve, reject) {
        // ... some code

        if (/* 异步操作成功 */){
          resolve(value);
        } else {
          reject(error);
        }
      });
    </pre>
    <pre>
      function timeout(ms) {
        return new Promise((resolve, reject) => {
          setTimeout(resolve, ms, 'done');
        });
      }

      timeout(100).then((value) => {
        console.log(value);
      });
    </pre>
    <hr>
    <per>
      getJSON("/posts.json")
        .then(function(json) {
          return json.post;
        })
        .then(function(post) {
          // ...
        });
        .then(function(post) {
          // ...
        });
        .then(function(post) {
          // ...
        });
        .then(function(post) {
          // ...
        });
        .then(function(post) {
          // ...
        });
        .then(function(post) {
          // ...
        });
    </per>
    <h1>上面的代码使用then方法，依次指定了两个回调函数。第一个回调函数完成以后，会将返回结果作为参数，传入第二个回调函数。</h1>
    <p>Promise中常用的几个方法：
      1.then()：成功的回调
      2.catch()：失败的回调
      3.all()：多个请求的集合，要求每一个请求都成功。取决于最慢的那个请求。
      4.race()：多个请求的集合，只需要第一个成功的请求。取决于最慢的那个请求。</p>
    <hr>
    <p>ES7中的async/await</p>
    async fn getJSON() {
      await ajax1() ...
      await ajax2() ...
      await ajax3() ...
    }
  </div>
</template>

<script>
export default {
  data () {
    return {
      
    }
  }
}
</script>

<style scoped>

</style>
